In general, software testing is a systematic process designed to find differences between the expected behavior of a software system as specified in a software requirements document and the actual behavior of the software system. In other words, software testing is an activity for finding defects, commonly known as bugs, in the software system.
Complex software systems are tested, at least in part, using automated testing tools. More specifically, tests are developed to test specific requirements or features of a software system. A test may be source code and any accompanying information that exercises a particular feature, or part of a feature of a software system. Further, each test may include one or more test cases directed to specific requirements of the feature, or part of a feature to be tested. These tests are provided as input to an automated testing tool that uses the test cases to test the software system.
Typically, the source code in the tests is encoded in the same programming language as that used to develop the software system. However, the tests themselves are defined using the preferred input language of the automated testing tool, e.g., a scripting language, markup language, etc. In such a scenario, the test source code is created separately and manually inserted into the test definition written in the preferred input language. For example, some automated testing tools for Java compatibility testing require the tests to be written in extended markup language (XML). For such automated testing tools, a document type definition (DTD) is created that specifies the XML format of test definitions. The tests are then directly written in the specified DTD format (i.e., the tests are written in XML in accordance with the specified DTD format) and fragments of JAVA™ code are inserted as needed into these test definitions. JAVA™ is a trademark of Sun Microsystems™, Inc. located in Santa Clara, Calif.